package net.hn.hnms.biz.safety.location.service;

import net.hn.hnms.biz.api.feign.model.DataStateVo;
import net.hn.hnms.biz.api.safety.location.model.*;
import net.hn.hnms.biz.api.safety.monitor.model.BaseSensorCoordDto;
import net.hn.hnms.biz.safety.location.domain.AreaMiningVo;
import net.hn.hnms.biz.safety.location.domain.JxryHisPersonnelinfoEntity;
import net.hn.hnms.biz.safety.location.domain.JxryNowPersonnelinfoEntity;
import net.hn.hnms.biz.safety.location.domain.TramNowPo;
import net.hn.hnms.biz.safety.location.group.domain.BasePersonnelInfoVo;
import net.hn.hnms.sys.common.core.domain.ResponsePage;
import org.springframework.data.domain.Pageable;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * Author: PanSX
 * Date: 2022/8/9 10:33
 */
public interface LocationService {
    /**
     * 今日信息
     * @return
     */
    LocationTodayInfo todayInfo(String mineCode);

    /**
     * 今日带班信息
     * @return
     */
    List<LeadVo> leads(String mineCode);

    /**
     * 井下人数趋势
     * @param type 月|周
     * @return
     */
    PeopleTrendVo peopleTrend(String type, String mineCode);

    /**
     * 井下人员
     * @return
     */
    List<PeopleVo> peopleInfo(String name, String mineCode);
    /**
     * 根据人员编码获取base人员信息
     * @return
     */
    BasePersonnelInfoVo getBasePeopleInfo(String code, String mineCode);

    /**
     * 重点工作区域人员
     * @return
     */
    List<KeyAreaVo> keyAreas(String mineCode);

    /**
     * 重要指标
     * @return
     */
    IndicatorVo indicator(String mineCode);

    /**
     * 人员轨迹
     * @param staffCode
     * @param inTime
     * @return
     */
    List<TrailVo> trail(String staffCode, String inTime, String mineCode);
    /**
     * 人员历史轨迹
     * @param staffCode
     * @param inTime
     * @return
     */
    List<TrailVo> hisTrail(String staffCode, String inTime, String mineCode) throws ParseException;
    /**
     * 工作区域人员
     * @param areaCode
     * @return
     */
    List<PeopleVo> peopleInfoByArea(String areaCode,String stationCode,String mineCode);

    /**
     * 首页今日信息
     * @return
     */
    IndexTodayVo IndexTodayInfo(String mineCode) throws ParseException;

    /**
     * 报警列表
     * @param alarmType
     * @param beginTime
     * @param endTime
     * @return
     */
    ResponsePage<AlarmVo> getAlarmPageList(String alarmType, String beginTime, String endTime, int page, int pageSize, String mineCode);

    /**
     * 井下人员实时
     * @param duty
     * @param dept
     * @param pageable
     * @return
     */
    ResponsePage<JxryNowPersonnelinfoEntity> getPageDate( String duty, String dept,String staffName,String leader, Pageable pageable,String mineCode);

    /**
     * 井下人员历史
     * @param duty
     * @pam dept
     * @param pageable
     * @return
     */
    ResponsePage<JxryHisPersonnelinfoEntity> getPageDate(String duty, String dept, String staffName, String leader,String beginTime,String endTime, Pageable pageable,String mineCode);

    /**
     * 获取全部部门或工种
     * @param type duty或dept
     * @return
     */
    List<String> getAllDeptOrDuty(String type,String mineCode);
    /**
     * 获取站点下的人员
     * @return
     */
    List<String> getUserIds( List<String> stations,String mineCode);

    /**
     * 获取站点位置
     * @return
     */
    List<Map<String,Object>> getStationAddr();


    /**
     * 站点合并后的数量
     * @return
     */
    List<Map<String, Object>> getNewStationAddr(String mineCode);

    //车辆数据
    List<TramNowPo> carNowData(String mineCode);

    /**
     * 采面领班
     * @param mineCode
     * @param areaCode
     * @return
     */
    AreaMiningVo teamLead(String mineCode,String areaCode);


    Map<String, String> ftpUtile(String mineCode) throws Exception;


    List<DataStateVo> getMaxTime(String mineCode, String companyCode);

    /**
     * 获取井下人员BaseSensorTable表所有信息
     * @return
     */
    List<BaseSensorCoordDto> getBaseSensorTableAllList(String mineCode);

    /**
     * 获取井下总人数
     * @param mineCode
     * @return
     */
    Integer getPitNumber(String mineCode);

    public Map gaotouyaoHttpRTF();
}
